// utils/auth.js
// 用户认证相关工具函数

import { post } from './request.js'

/**
 * 用户登录
 * @param {string} username - 用户名、邮箱或手机号
 * @param {string} password - 密码
 * @param {string} userType - 用户类型：'student' 或 'teacher'（可选，如果传入则后端会验证匹配）
 * @returns {Promise} 登录结果
 */
export function login(username, password, userType = null) {
  return new Promise((resolve, reject) => {
    // 构建请求参数
    const params = {
      username: username,
      password: password
    }
    
    // 如果传入了userType，则添加到参数中（可选）
    if (userType) {
      params.userType = userType
    }
    
    // 调用后端登录接口
    post('/login/password', params).then(res => {
      if (res.success) {
        // 保存用户信息到本地存储，统一映射字段名以匹配前端期望
        const userInfo = {
          id: res.user.id,
          username: res.user.username,
          email: res.user.email,
          phone: res.user.phone,
          name: res.user.realName,  // 映射realName到name
          avatar: res.user.avatarUrl,  // 映射avatarUrl到avatar
          type: res.user.userType, // student 或 teacher
          ...res.detail // 学员或讲师的详细信息（包含introduction, hourlyRate, isVerified等）
        }
        
        // 如果是讲师，将teacherLevel映射为level（前端期望的字段名）
        if (res.user.userType === 'teacher' && res.detail && res.detail.teacherLevel) {
          userInfo.level = res.detail.teacherLevel
        }
        
        // 如果是学员，将gradeLevel映射为level
        if (res.user.userType === 'student' && res.detail && res.detail.gradeLevel) {
          userInfo.level = res.detail.gradeLevel
        }
        
        wx.setStorageSync('userInfo', userInfo)
        // 如果有token，保存token
        if (res.token) {
          wx.setStorageSync('token', res.token)
        }
        
        resolve({
          success: true,
          data: {
            userInfo: userInfo,
            token: res.token || '',
            detail: res.detail
          }
        })
      } else {
        reject({
          success: false,
          message: res.message || '登录失败'
        })
      }
    }).catch(error => {
      reject({
        success: false,
        message: error.message || '登录失败，请检查网络连接'
      })
    })
  })
}

export function logout() {
  wx.removeStorageSync('userInfo')
  wx.removeStorageSync('token')
  wx.reLaunch({
    url: '/pages/login/login'
  })
}

export function getCurrentUser() {
  return wx.getStorageSync('userInfo')
}
